
# Head Enlarger With CMake
# CMake 真是十分甚至九分的令人头大喵

message("\n======================================================================")
message("  --  基本命令喵")
message("======================================================================\n")

message("    --  输出消息喵 \n")

# =============================================================================
# 普通消息喵： message([mode] "消息文本" ...)
#   其中 mode 默认为 NOTICE
#   其中 mode 可为 FATAL_ERROR SEND_ERROR WARNING AUTHOR_WARNING DEPRECATION NOTICE STATUS VERBOSE
message(STATUS "    输出消息： CMake Head Enlarger Started!    \n")

# =============================================================================
# 检查消息喵： message([检查类型] "消息文本" ...)
#   检查类型 可为 CHECK_START CHECK_PASS CHECK_FAIL
#   可嵌套喵， CHECK_PASS 及 CHECK_FAIL 需与 CHECK_START 配套使用喵
message(CHECK_START "检查消息，检查开始喵！")
message(CHECK_FAIL "不通过喵！")
message(CHECK_START "再次检查喵！")
message(CHECK_PASS "通过喵！\n")

message("    --  CMake 版本喵 \n")

# =============================================================================
# 设置需要的 CMake 版本喵： cmake_minimum_required(VERSION 最低版本[...最高版本] [FATAL_ERROR])
#   如 cmake_minimum_required(VERSION 3.8...3.16 FATAL_ERROR) 或 cmake_minimum_required(VERSION 3.8)
#   指定 FATAL_ERROR 则 CMake 版本不满足时将报错喵，否则为警告喵
cmake_minimum_required(VERSION 3.30)
message("CMake 版本需要高于 " ${CMAKE_MINIMUM_REQUIRED_VERSION} "\n")

# =============================================================================
# cmake_policy 命令用于设置策略喵，细节略喵
#   cmake_policy(VERSION <min>[...<max>]) # 根据 CMake 设置策略
#   cmake_policy(SET CMP<NNNN> NEW 或 OLD) # 显式设置策略
#   cmake_policy(GET CMP<NNNN> <variable>) # 检查策略设置
#   cmake_policy(PUSH或POP) # 操作策略栈

message("    --  创建项目喵 \n")

# =============================================================================
# 设置项目，同时还将设置目录信息喵，以 PROJECT 开头的全局项目信息的新值会覆盖旧值喵
project(HeadEnlarger # 项目名称喵，存储在 PROJECT_NAME 和 CMAKE_PROJECT_NAME
  VERSION 1.0.0.0 # 版本喵
  DESCRIPTION "CMake 真是十分令人头大，甚至九分喵！" # 项目描述喵
  HOMEPAGE_URL 127.0.0.1 # 项目主页网址喵
  LANGUAGES CXX) # 语言喵
message("项目名称喵 : ${PROJECT_NAME}  ${CMAKE_PROJECT_NAME}")
message("项目源目录喵 : ${PROJECT_SOURCE_DIR} ${HeadEnlarger_SOURCE_DIR}")
message("项目二进制目录喵 : ${PROJECT_BINARY_DIR} ${HeadEnlarger_BINARY_DIR}") # 即输出目录喵
message("项目版本喵 : ${PROJECT_VERSION} ${HeadEnlarger_VERSION}")
message("项目版本喵 : ${PROJECT_VERSION_MAJOR} . ${PROJECT_VERSION_MINOR} . ${PROJECT_VERSION_PATCH} . ${PROJECT_VERSION_TWEAK}")
message("项目描述喵 : ${HeadEnlarger_DESCRIPTION}")
message("项目主页喵 : ${HeadEnlarger_HOMEPAGE_URL}\n")

# =============================================================================
# =============================================================================

add_subdirectory(ScriptCmd) # CMake 脚本命令解说喵
add_subdirectory(ProjectCmd) # CMake 项目命令解说喵
